#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
#include <assert.h>

void test_standard() {

    asm (
        "fabd h3,h2,h1\n\t"
        "fabd v2.4h,v1.4h,v0.4h\n\t"
        "fabs v2.4h,v1.4h\n\t"
        "facge h3,h2,h1\n\t"
        "facge v3.4h,v2.4h,v1.4h\n\t"
        "facgt h3,h2,h1\n\t"
        "facgt v3.4h,v2.4h,v1.4h\n\t"
        "fadd v3.4h,v2.4h,v1.4h\n\t"
        "faddp h2,v2.2h\n\t"
        "faddp v3.4h,v2.4h,v1.4h\n\t"
        "fcmeq h3,h2,h1\n\t"
        "fcmeq v3.4h,v2.4h,v1.4h\n\t"
        "fcmeq h3,h2,#0.0\n\t"
        "fcmeq v3.4h,v2.4h,#0.0\n\t"
        "fcmge h3,h2,h1\n\t"
        "fcmge v3.4h,v2.4h,v1.4h\n\t"
        "fcmge h3,h2,#0.0\n\t"
        "fcmge v3.4h,v2.4h,#0.0\n\t"
        "fcmgt h3,h2,h1\n\t"
        "fcmgt v3.4h,v2.4h,v1.4h\n\t"
        "fcmgt h3,h2,#0.0\n\t"
        "fcmgt v3.4h,v2.4h,#0.0\n\t"
        "fcmle h3,h2,#0.0\n\t"
        "fcmle v3.4h,v2.4h,#0.0\n\t"
        "fcmlt h3,h2,#0.0\n\t"
        "fcmlt v3.4h,v2.4h,#0.0\n\t"
        "fcvtas h3,h2\n\t"
        "fcvtas v3.4h,v2.4h\n\t"
        "fcvtau h3,h2\n\t"
        "fcvtau v3.4h,v2.4h\n\t"
        "fcvtms h3,h2\n\t"
        "fcvtms v3.4h,v2.4h\n\t"
        "fcvtmu h3,h2\n\t"
        "fcvtmu v3.4h,v2.4h\n\t"
        "fcvtns h3,h2\n\t"
        "fcvtns v3.4h,v2.4h\n\t"
        "fcvtnu h3,h2\n\t"
        "fcvtnu v3.4h,v2.4h\n\t"
        "fcvtps h3,h2\n\t"
        "fcvtps v3.4h,v2.4h\n\t"
        "fcvtpu h3,h2\n\t"
        "fcvtpu v3.4h,v2.4h\n\t"
        "fcvtzs h3,h2\n\t"
        "fcvtzs v3.4h,v2.4h\n\t"
        "fcvtzu h3,h2\n\t"
        "fcvtzu v3.4h,v2.4h\n\t"
        "fdiv v3.4h,v2.4h,v1.4h\n\t"
        "fmax v3.4h,v2.4h,v1.4h\n\t"
        "fmaxnm v3.4h,v2.4h,v1.4h\n\t"
        "fmaxnmp h2,v2.2h\n\t"
        "fmaxnmp v3.4h,v2.4h,v1.4h\n\t"
        "fmaxnmv h2,v2.4h\n\t"
        "fmaxp h2,v2.2h\n\t"
        "fmaxp v3.4h,v2.4h,v1.4h\n\t"
        "fmaxv h2,v2.4h\n\t"
        "fmin v3.4h,v2.4h,v1.4h\n\t"
        "fminnm v3.4h,v2.4h,v1.4h\n\t"
        "fminnmp h2,v2.2h\n\t"
        "fminnmp v3.4h,v2.4h,v1.4h\n\t"
        "fminnmv h2,v2.4h\n\t"
        "fminp h2,v2.2h\n\t"
        "fminp v3.4h,v2.4h,v1.4h\n\t"
        "fminv h2,v2.4h\n\t"
        "fmla h2,h1,v1.h[0]\n\t"
        "fmla v3.4h,v2.4h,v1.h[0]\n\t"
        "fmla v3.4h,v2.4h,v1.4h\n\t"
        "fmls h2,h1,v1.h[0]\n\t"
        "fmls v3.4h,v2.4h,v1.h[0]\n\t"
        "fmls v3.4h,v2.4h,v1.4h\n\t"
        "fmov v3.4h,#02\n\t"
        "fmul h2,h1,v1.h[0]\n\t"
        "fmul v3.4h,v2.4h,v1.h[0]\n\t"
        "fmul v3.4h,v2.4h,v1.4h\n\t"
        "fmulx h2,h1,v1.h[0]\n\t"
        "fmulx v3.4h,v2.4h,v1.h[0]\n\t"
        "fmulx v3.4h,v2.4h,v1.4h\n\t"
        "fmulx h3,h2,h1\n\t"
        "fneg v3.4h,v2.4h\n\t"
        "frecpe h3,h2\n\t"
        "frecpe v3.4h,v2.4h\n\t"
        "frecps h3,h2,h1\n\t"
        "frecps v3.4h,v2.4h,v1.4h\n\t"
        "frecpx h3,h2\n\t"
        "frinta v3.4h,v2.4h\n\t"
        "frinti v3.4h,v2.4h\n\t"
        "frintm v3.4h,v2.4h\n\t"
        "frintn v3.4h,v2.4h\n\t"
        "frintp v3.4h,v2.4h\n\t"
        "frintx v3.4h,v2.4h\n\t"
        "frintz v3.4h,v2.4h\n\t"
        "frsqrte v3.4h,v2.4h\n\t"
        "frsqrte h3,h2\n\t"
        "frsqrts v3.4h,v2.4h,v1.4h\n\t"
        "frsqrts h3,h2,h1\n\t"
        "fsqrt v3.4h,v2.4h\n\t"
        "fsub v3.4h,v2.4h,v1.4h\n\t"
        "scvtf h3,h2\n\t"
        "scvtf v3.4h,v2.4h\n\t"
        "ucvtf h3,h2\n\t"
        "ucvtf v3.4h,v2.4h\n\t"
        );
}

int main() {
    test_standard();
    fprintf(stderr, "%s\n", "Test passed.");
    return 0;
}